package com.neuedu.corejava.ch10;

import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class MapClass {

	public static void main(String[] args) {
		// Map集合用于保存有映射关系的数据
		// 储存数据时是通过Key Value的对应关系进行保存
		// Key是一个Set集合，不能保存相同的Key；保存Key相同的数据，后面的数据会覆盖前面的数据
		// value是一个Collection集合

		// HashMap允许value值为null，允许有null Key，value可以重复，key不能重复
		// Hashtable不允许value值为null，不允许有null Key，value可以重复，key不能重复
		// HashMap线程不安全，Hashtable线程安全

		// Map<String, Computer> map = new HashMap<>(16);
		// Map<String, List<Computer>> map2 = new HashMap<>();
		Hashtable<String, Computer> map = new Hashtable<>(16);

		for (int i = 0; i < 10; i++) {
			// 添加数据
			map.put("HP" + i, new Computer("HP" + i, 3000 + i));
		}

		// 遍历map，一般先取出key，再遍历key，再根据key取出value
		Set<String> keySet = map.keySet();
		Iterator<String> iterator = keySet.iterator();
		// while (iterator.hasNext()) {
		// String string = iterator.next();
		// Computer computer = map.get(string);
		// System.out.println(""+string+":"+computer.getBrand()+" : "+"  价格："+computer.getPrice());
		// }

		// TreeMap
		TreeMap<String, Computer> map3 = new TreeMap<>();

		map3.put("HP1", new Computer("HP", 4000));
		map3.put("HP2", new Computer("HP", 5000));
		map3.put("HP3", new Computer("HP", 3000));

		keySet = map3.keySet();
		iterator = keySet.iterator();
		while (iterator.hasNext()) {
			String string = iterator.next();
			Computer computer = map3.get(string);
			if (computer != null) {
				System.out.println("" + string + ":" + computer.getBrand()
						+ " : " + "  价格：" + computer.getPrice());
			}
		}

	}

}
